Elasticsearch Query DSL (Domain Specific Language) হলো একটি JSON-ভিত্তিক ভাষা, যা Elasticsearch এ ডেটা অনুসন্ধান এবং ফিল্টার করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন ধরনের query এবং ফিল্টার ব্যবহার করে ডকুমেন্ট অনুসন্ধান, ফিল্টারিং, এবং ডেটা বিশ্লেষণ করতে সাহায্য করে। Query DSL এর মাধ্যমে আপনি খুব সহজে কমপ্লেক্স সার্চ কন্ডিশন তৈরি করতে পারেন। নিচে এর বেসিক ধারণা ও কাঠামো নিয়ে আলোচনা করা হলো:
term
, match
, এবং range
ইত্যাদি।bool
, dis_max
, এবং constant_score
ইত্যাদি।Leaf query গুলো সরাসরি ডকুমেন্টের ফিল্ডের উপর অপারেশন করে। এগুলো সাধারণত নির্দিষ্ট একটি মান (value) এর উপর ভিত্তি করে ফিল্টার বা সার্চ করে। কিছু সাধারণ Leaf query উদাহরণ:
Match Query:
description
ফিল্ডে "full text search"
এর সাথে মিলে যায় এমন ডকুমেন্টগুলো রিটার্ন হবে।{
"query": {
"match": {
"description": "full text search"
}
}
}
Term Query:
{
"query": {
"term": {
"status": "published"
}
}
}
Range Query:
{
"query": {
"range": {
"price": {
"gte": 100,
"lte": 500
}
}
}
}
Compound query গুলো একাধিক query কে একত্রিত করে আরও জটিল কন্ডিশন তৈরি করতে ব্যবহৃত হয়। কিছু সাধারণ compound query উদাহরণ:
Bool Query:
must
অংশে দুটি match
query এবং filter
অংশে একটি range
query আছে। সবগুলো কন্ডিশন পূরণ করতে হবে ডকুমেন্ট ম্যাচ করতে।{
"query": {
"bool": {
"must": [
{ "match": { "title": "Elasticsearch" }},
{ "match": { "category": "search engine" }}
],
"filter": [
{ "range": { "date": { "gte": "2023-01-01" }}}
]
}
}
}
Dis Max Query:
{
"query": {
"dis_max": {
"queries": [
{ "match": { "title": "Elasticsearch" }},
{ "match": { "description": "full text search" }}
],
"tie_breaker": 0.3
}
}
}
Constant Score Query:
{
"query": {
"constant_score": {
"filter": {
"term": { "status": "published" }
},
"boost": 1.5
}
}
}
bool
query এর মধ্যে filter
ক্লজ হিসেবে ব্যবহৃত হয়।Elasticsearch Query DSL এর মাধ্যমে আপনি বিভিন্ন ধরনের query তৈরি করতে পারবেন যা খুবই ফ্লেক্সিবল এবং পাওয়ারফুল। Query DSL এর বেসিক ধারণা ও কাঠামো ভালোভাবে বুঝে আপনি খুব সহজেই জটিল সার্চ কন্ডিশন তৈরি করতে এবং ডেটা ফিল্টারিং ও এনালাইসিস করতে পারবেন।
আরও দেখুন...